//
//  WBUserAccount.swift
//  DLSwift微博
//
//  Created by 丁浪涛 on 2016/11/16.
//  Copyright © 2016年 丁浪涛. All rights reserved.
//

import UIKit
private let accountFile :NSString =  "useraccount.json"
class WBUserAccount: NSObject {
    
    
    var  access_token : String? //= "2.00XpUFpB3jMe_E304906a793yRHK_C"
    var uid : String?
    //用户使用周期 开发者 5年（并且不会变，每次登录都是五年）  使用者3天（真实环境 每次都会递减）
    var expires_in : TimeInterval = 0{
        didSet{
            expiresDate = Date.init(timeIntervalSinceNow: expires_in)
        }
    
    }
    
    //用户昵称 用户头像
    var  screen_name : String?
    var avatar_large : String?
    
    
    
    
    
    //  过期日期
    var expiresDate: Date?

    //重写description  计算型属性
    override var description: String
    {
        return yy_modelDescription()
        
    }
    
    
    override init()
    {
        super.init()
        //1.从磁盘加载保存的文件 并转换成字典
        guard    let  path = accountFile.cz_appendTempDir(),
        let  data =  NSData(contentsOfFile: path),
        let dict  = try? JSONSerialization.jsonObject(with: data as Data, options: []) as? [String :AnyObject]
        else
     {
            return
      }
        //2.使用字典设置成属性值 此时 data一定有值了 guard 守护过了
        yy_modelSet(withJSON: dict ?? [:]) //相当于sel.yy
//        //测试过期日期
//        expiresDate = Date(timeIntervalSinceNow: -3600*24)
//        print(expiresDate!)
        
        
        //3. 判断token是否过期
        //A 比 B大 就是降序 orderedDescending
        if   expiresDate?.compare(Date()) != .orderedDescending {
            //如果不是降序 也就是说 expiresDate比当前时间小
            print("账户过期")
            //清空token
            access_token = nil
            uid = nil
            //删除文件
         _ =  try?  FileManager.default.removeItem(atPath: path)
            return
        }
              print("账户正常 \(self)")
    }
    
    // 存储方式
    /*
            1-> 偏好设置（小） Settings Bundle
            2->沙盒-归档 ／plist/ json
            3-> 数据库
            4 ->钥匙串（小／加密）
    */
    func  saveAccount()->()
    {
    
    //1.模型转字典
    var   dict = self.yy_modelToJSONObject() as? [String :AnyObject]  ?? [:]
        
     dict.removeValue(forKey: "expires_in")
    //2. 字典序列化
           //3. 写入磁盘
      guard   let data = try? JSONSerialization.data(withJSONObject: dict, options: []),
         let filePath = accountFile.cz_appendTempDir()
        else
      {
        return
        
        }
        
      ( data as NSData).write(toFile: filePath, atomically: true)
        
        print(dict)
        print("保存成功 ：\(filePath)")
    }
}
